# Copyright 2017-present The Material Components for iOS Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.

load(
    "//:material_components_ios.bzl",
    "mdc_examples_objc_library",
    "mdc_examples_swift_library",
    "mdc_extension_objc_library",
    "mdc_objc_library",
    "mdc_public_objc_library",
    "mdc_snapshot_objc_library",
    "mdc_snapshot_test",
    "mdc_unit_test_suite",
)
load("@build_bazel_rules_apple//apple:ios.bzl", "ios_unit_test")

licenses(["notice"])  # Apache 2.0

mdc_objc_library(
    name = "BottomNavigation",
    srcs =
        native.glob(
            [
                "src/*.m",
                "src/private/*.h",
                "src/private/*.m",
            ],
            exclude = [
                "src/MDCBottomNavigationBarController.m",
                "src/MDCBottomNavigationBarController.h",
                "src/MaterialBottomNavigationBeta.h",
            ],
        ),
    hdrs =
        native.glob(
            ["src/*.h"],
            exclude = [
                "src/MDCBottomNavigationBarController.h",
                "src/MaterialBottomNavigationBeta.h",
            ],
        ),
    bundles = [":Bundle"],
    enable_modules = 1,
    includes = ["src"],
    sdk_frameworks = [
        "CoreGraphics",
        "UIKit",
    ],
    visibility = ["//visibility:public"],
    deps = [
        "//components/Availability",
        "//components/Elevation",
        "//components/Ink",
        "//components/Palettes",
        "//components/Ripple",
        "//components/ShadowElevations",
        "//components/ShadowLayer",
        "//components/Typography",
        "//components/private/Math",
        "@material_internationalization_ios//:MDFInternationalization",
    ],
)

# Should only be used by test targets or :BottomNavigationBeta until
# that can be rolled-up into the main target.
mdc_objc_library(
    name = "privateHeaders",
    hdrs = native.glob(["src/private/*.h"]),
    visibility = ["//visibility:private"],
)

mdc_objc_library(
    name = "BottomNavigationBeta",
    srcs = ["src/MDCBottomNavigationBarController.m"],
    hdrs = [
        "src/MDCBottomNavigationBarController.h",
        "src/MaterialBottomNavigationBeta.h",
    ],
    enable_modules = 1,
    includes = ["src"],
    sdk_frameworks = ["CoreGraphics"],
    visibility = ["//:__subpackages__"],
    deps = [
        ":BottomNavigation",
        ":privateHeaders",
    ],
)

mdc_extension_objc_library(
    name = "Theming",
    deps = [
        ":BottomNavigation",
        "//components/ShadowElevations",
        "//components/schemes/Color",
        "//components/schemes/Container",
        "//components/schemes/Typography",
    ],
)

filegroup(
    name = "BundleFiles",
    srcs = glob([
        "src/MaterialBottomNavigation.bundle/**",
    ]),
)

objc_bundle(
    name = "Bundle",
    bundle_imports = [":BundleFiles"],
)

mdc_examples_objc_library(
    name = "ObjcExamples",
    includes = ["examples/supplemental"],
    deps = [
        ":BottomNavigation",
        ":Theming",
        "//components/Availability",
        "//components/Palettes",
        "//components/schemes/Color",
        "//components/schemes/Container",
        "//components/schemes/Typography",
    ],
)

mdc_examples_swift_library(
    name = "SwiftExamples",
    deps = [
        ":BottomNavigation",
        ":BottomNavigationBeta",
        ":ObjcExamples",
        ":Theming",
        "//components/AppBar",
        "//components/Buttons",
        "//components/Palettes",
        "//components/schemes/Container",
    ],
)

mdc_objc_library(
    name = "unit_test_sources",
    testonly = 1,
    srcs = native.glob(
        [
            "tests/unit/*.m",
            "tests/unit/*.h",
            "tests/unit/Theming/*.m",
        ],
        exclude =  [
            "tests/unit/MDCBottomNavigationBarControllerTests.m",
            "tests/unit/MDCBottomNavigationBarControllerDelegateTests.m",
        ],
    ),
    sdk_frameworks = [
        "CoreGraphics",
        "XCTest",
    ],
    visibility = ["//visibility:private"],
    deps = [
        ":BottomNavigation",
        ":Theming",
        ":privateHeaders",
        "//components/Availability",
        "//components/Typography",
    ],
)

mdc_objc_library(
    name = "unit_test_beta_sources",
    testonly = 1,
    srcs = [
        "tests/unit/MDCBottomNavigationBarControllerTests.m",
        "tests/unit/MDCBottomNavigationBarControllerDelegateTests.m",
    ],
    sdk_frameworks = [
        "CoreGraphics",
        "XCTest",
    ],
    visibility = ["//visibility:private"],
    deps = [
        ":BottomNavigationBeta",
    ],
)

ios_unit_test(
    name = "unit_tests_beta",
    flaky = 1,
    minimum_os_version = "9.0",
    test_host = "//components/private/Snapshot/TestHost",
    deps = [":unit_test_beta_sources"],
)

mdc_unit_test_suite(
    name = "unit_tests",
    deps = [
        ":unit_test_sources",
    ],
)

mdc_snapshot_objc_library(
    name = "snapshot_test_lib",
    deps = [
        ":BottomNavigation",
        ":BottomNavigationBeta",
        ":Theming",
        ":privateHeaders",
    ],
)

mdc_snapshot_test(
    name = "snapshot_tests",
    deps = [":snapshot_test_lib"],
)
